package com.shenchuangit.rydemo.web.system.sequence.service;

import java.util.List;

import com.shenchuangit.rydemo.web.system.sequence.domain.Sequence;
import org.springframework.stereotype.Component;

/**
 * 序列Service接口
 *
 * @author liuyu
 * @date 2021-06-10
 */
@Component
public interface ISequenceService {
    /**
     * 查询序列
     *
     * @param id 序列ID
     * @return 序列
     */
    public Sequence selectSequenceById(Long id);

    /**
     * 查询序列列表
     *
     * @param sequence 序列
     * @return 序列集合
     */
    public List<Sequence> selectSequenceList(Sequence sequence);

    /**
     * 新增序列
     *
     * @param sequence 序列
     * @return 结果
     */
    public int insertSequence(Sequence sequence);

    /**
     * 修改序列
     *
     * @param sequence 序列
     * @return 结果
     */
    public int updateSequence(Sequence sequence);

    /**
     * 批量删除序列
     *
     * @param ids 需要删除的序列ID
     * @return 结果
     */
    public int deleteSequenceByIds(Long[] ids);

    /**
     * 删除序列信息
     *
     * @param id 序列ID
     * @return 结果
     */
    public int deleteSequenceById(Long id);

    /**
     * 根据序列名称获取当前序列值
     * @param seqName 序列名称
     * @return 序列值 String
     */
    public String getNextSeq(String seqName);

    /**
     * 获取序列号（默认序列长度4位）
     * @param seqName 序列名称
     * @return 序列值
     */
    public String getSerialNumber(String seqName);

    /**
     * 获取序列号
     * @param seqName 序列名称
     * @param strLength 序列字符长度
     * @return 序列值
     */
    public String getSerialNumber(String seqName, int strLength);

    /**
     * 获取序列号（默认序列长度4位）
     * @param prefix 字母前缀
     * @param seqName 序列名称
     * @return 序列值
     */
    public String getSerialNumber(String prefix, String seqName);

    /**
     * 获取序列号
     * @param prefix 字母前缀
     * @param seqName 序列名称
     * @param strLength 序列字符长度
     * @return 序列值
     */
    public String getSerialNumber(String prefix, String seqName, int strLength);
}
